package me.util;

import java.sql.*;

/**
 * 数据库管理工具
 *
 * @author Rainh
 */

public class DBUtil {

    /**
     * 定义属性文件
     */
    private static Connection conn;
    private static Statement st;
    private static PreparedStatement ps;

    /**
     * 加载静态代码块
     */
    static {

        try {
            //尝试获取数据库连接驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

    }

    /**
     * 获取数据库连接对象Connection
     * @return
     */
    public static Connection getConnection()
    {
        try {
            conn =
            DriverManager.getConnection("jdbc:mysql:///stu_manager?serverTimezone=UTC","root","123456");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }

    /**
     * 获取Statement对象
     *
     * @return
     */
    public static Statement getStatement()
    {
        //获取连接对象
        Connection connection = getConnection();
        //
        try {
            //通过连接对象获取Statement对象
            st = connection.createStatement();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return st;
    }

    /**
     * 执行sql语句的PreparedStatement对象
     * @param sql
     * @return
     */
    public static PreparedStatement getPreparedStatement(String sql)
    {
        //获取连接对象
        Connection connection = getConnection();
        try {
            //给PreparedStatement赋值
            ps = connection.prepareStatement(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return ps;
    }

    /**
     * 设置关闭数据库连接
     */
    public static void closeDBResources()
    {
        try {
            //如果Connection没有关闭或者是开着的，关闭它
            if(conn!=null )
            {
                conn.close();
            }
            //如果Statement没有关闭或者是开着的，关闭它
            if(st!=null )
            {
                st.close();
            }
            //如果PreparedStatement没有关闭或者是开着的，关闭它
            if(ps!=null )
            {
                ps.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
